/**
 * Created by mike on 2017/5/15.
 */


var http = require("http");
var express = require("express"); //引入express
var socketIo = require("socket.io"); //引入socket.io


var app = new express();

app.use('/static', express.static('public'));

var server = http.createServer(app);
var io = new socketIo(server); //将socket.io注入express模块

//客户端 1 的访问地址
app.get("/msg", function (req, res, next) {
    res.sendFile(__dirname + "/views/msg.html");
});

app.get("/msg_01", function (req, res, next) {
    res.sendFile(__dirname + "/views/msg_01.html");
});

app.get("/msg_02", function (req, res, next) {
    res.sendFile(__dirname + "/views/msg_02.html");
});

app.get("/slide_show_01", function (req, res, next) {
    res.sendFile(__dirname + "/views/slide_show_01.html");
});

app.get("/slide_show_02", function (req, res, next) {
    res.sendFile(__dirname + "/views/slide_show_02.html");
});
app.get("/slide_show_all", function (req, res, next) {
    res.sendFile(__dirname + "/views/slide_show_all.html");
});

app.get("/draw", function (req, res, next) {
    res.sendFile(__dirname + "/views/draw.html");
});

app.get("/draw_client", function (req, res, next) {
    res.sendFile(__dirname + "/views/draw_client.html");
});



app.get("/event", function (req, res, next) {
    res.sendFile(__dirname + "/views/event.html");
});


app.get("/teach_app", function (req, res, next) {
    res.sendFile(__dirname + "/views/teach_app.html");
});



server.listen(8889); //express 监听 8080 端口，因为本机80端口已被暂用

//每个客户端socket连接时都会触发 connection 事件
io.on("connection", function (clientSocket) {
    // socket.io 使用 emit(eventname,data) 发送消息，使用on(eventname,callback)监听消息

    //监听客户端发送的 sendMsg 事件
    clientSocket.on("changeResource", function (data) {
        // data 为客户端发送的消息，可以是 字符串，json对象或buffer

        // 使用 emit 发送消息，broadcast 表示 除自己以外的所有已连接的socket客户端。
        //clientSocket.broadcast.emit("clientReceiveChangeResource", data);
        io.sockets.emit("clientReceiveChangeResource", data);

    });


    //监听客户端发送的 sendMsg 事件
    clientSocket.on("sendMsg", function (data) {
        // data 为客户端发送的消息，可以是 字符串，json对象或buffer

        // 使用 emit 发送消息，broadcast 表示 除自己以外的所有已连接的socket客户端。
        // clientSocket.broadcast.emit("receiveMsg", data);
        io.sockets.emit("receiveMsg", data);

    });



    //接受消息
    clientSocket.on("teach_client_msg", function (data) {
        console.log(data);
        clientSocket.broadcast.emit("teach_sever_msg", data);
        //io.sockets.emit("teach_sever_msg", data);
    });


    //监听客户端发送的 sendMsg 事件
    clientSocket.on("teach_app_to_server", function (data) {
        // data 为客户端发送的消息，可以是 字符串，json对象或buffer

        // 使用 emit 发送消息，broadcast 表示 除自己以外的所有已连接的socket客户端。
        // clientSocket.broadcast.emit("receiveMsg", data);
        io.sockets.emit("teach_server_to_app", data);

    });

    io.sockets.emit("teach_server_to_app", {
        header:{
            guid: new Date().getTime(),
        },
        body: {}
    });

});